/*
 * Comprador.java
 *
 */
package ar.com.educacionit.vehiculos.entidades;

import ar.com.educacionit.base.entidades.Persona;

import java.sql.Connection;
import ar.com.educacionit.hibernate.manager.EducacionITSessionManager;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;


/**
 *
 * @author Sebastian S. Sanga <SebastianSanga@educacionIT.com.ar>
 */
public class Comprador extends Persona implements Serializable {

    /**
     * Creates a new instance of Comprador
     */
    public Comprador() {
    }

    public Comprador(String nombre, String apellido, String nroDocumento, double presupuesto) {
        super(nombre, apellido, nroDocumento);
        setPresupuesto(presupuesto);
    }
    // Atributos
    private int id;
    private double presupuesto;
    private Set autos;

    public void setAuto(Set Auto) {
        this.autos = Auto;
    }

    public Set getAuto() {
        return autos;
    }

    public static List obtenerTodos() throws Exception {

//        String laConsulta = "select * from compradores";
//
//        Statement sta = conn.createStatement();
//
//        ResultSet rs = sta.executeQuery(laConsulta);
//
//        ArrayList compradores = new ArrayList();
//
//        while (rs.next()) {
//
//            Comprador c = new Comprador();
//
//            c.setId(rs.getInt("co_id"));
//            c.setNombre(rs.getString("co_nombre"));
//            c.setApellido(rs.getString("co_apellido"));
//            c.setNumeroDocumento(rs.getString("co_documento"));
//            c.setPresupuesto(rs.getDouble("co_presupuesto"));
//
//            compradores.add(c);
//        }
//
//
//        sta.close();
//        return compradores;


        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Realiza la consulta
        List<Comprador> compradores = session.createQuery("FROM ar.com.educacionit.vehiculos.entidades.Comprador").list();

        // Cierra la sesion de trabajo
        session.close();

        // Retorna los concesionarios
        return compradores;


    }

    public void insertar() throws Exception {

//        String insercion = "INSERT INTO compradores (co_nombre, co_apellido, co_documento, co_presupuesto)"+
//                 "VALUE ('" + getNombre() + "','" + getApellido() + "','" + getNumeroDocumento() + "','" + getPresupuesto() + "' ) ";
//
//        // Informa la insercion a realizar
//        System.out.println(">>SQL: " + insercion);
//
//        Statement sta = conn.createStatement();
//
//        sta.execute(insercion);
//
//        sta.close();

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Inserta el concesionario
        session.save(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }

    public void actualizar (Connection conn) throws Exception{
//
//        String actualiza = "UPDATE compradores SET co_nombre= '"+getNombre()+"' ,co_apellido ='"+getApellido()+"', co_documento='"+ getNumeroDocumento()+"', " +
//                " co_presupuesto = '"+getPresupuesto()+ "' " +
//                " WHERE co_id = " + getId();
//
//        System.out.println(">>SQL: " + actualiza);
//
//        Statement sta = conn.createStatement();
//
//        sta.execute(actualiza);
//
//        sta.close();

        // Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.update(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();

    }

    public void eliminar ()throws HibernateException {
// Obtiene la sesion de trabajo
        Session session = EducacionITSessionManager.getSession();

        // Genera una transaccion
        Transaction tx = session.beginTransaction();

        // Elimina el concesionario
        session.delete(this);

        // Compromete los cambios
        tx.commit();

        // Cierra la sesion de trabajo
        session.close();


    }


    public void setId(int id) {
        this.id = id;
    }

    public int getId() {
        return  id;
    }

    public String toString() {
        return getApellido() + ", " + getNombre();
    }

    public double getPresupuesto() {
        return presupuesto;
    }

    public void setPresupuesto(double presupuesto) {
        this.presupuesto = presupuesto;
    }
}
